package main

import "fmt"

/*
   ============================作业三：分析斐波那契数列递推公式递归版本的问题，试着为该函数提供一个Cache，使其计算效率提升==============================
*/
func fib(n int, m map[int]int) int {
    if n == 1 || n == 2 {
        return 1
    } else if n <= 0 {
        fmt.Println("请输出大于0的整数")
        return 0
    }
    if _, exists := m[n]; !exists {
        m[n] = fib(n-1, m) + fib(n-2, m)
        return m[n]
    } else {
        return m[n]
    }
}
func main() {
    m := make(map[int]int, 100)
    fmt.Println(fib(100, m))
}

// 阿飞老师的批改
// 逻辑清晰明了
